﻿#ifndef __SUPPLYBANK_H_
#define __SUPPLYBANK_H_
#include"Supply.h"
#include"SupplyProperty.h"
#include<QVector>
class Sprite;
//补给库
class SupplyBank :public Background
{
public:
	SupplyBank();
	SupplyBank(int max);
	~SupplyBank() = default;
	//增加一个补给包
	void addSupply(const QPoint& point, const Supply::Type type = Supply::Type::bullet);
	void addSupply(const int x, const int y, const Supply::Type type = Supply::Type::bullet);
	////绑定飞机
	//void bindPlane(Sprite* const plane);
	//设置自动补给包的循环出现时间范围
	void setTimerSupply(const int MinTime, const int MaxTime, const Supply::Type type = Supply::Type::bullet);
	//设置自动补给包的步长
	void setSteplenSupply(const int Steplen, const Supply::Type type = Supply::Type::bullet);
	//设置出场的补给包种类
	void setSupplyType(const int type);
	//设置碰撞器(边界),设置后程序才能放的出补给包
	void setWindow(const QRect& rect);
	//开始放补给包,启动按钮请设置好参数最后调用
	void startAuto();
	//关闭放补给包
	void closeAuto();
	//获取补给包组
	QVector<Supply>& getSupplyBank();
	//初始化一些基本信息
	virtual void init();
	//更新数据
	virtual void update()override;
	//绘图
	virtual void draw(QPainter* painter)override;
	//设置暂停
	virtual void setPause(bool flag);
private:
	//自动放补给包定时器函数设置
	void AutoSupply();
private:
	QRect m_Window;  //碰撞器
	QVector<Supply> m_SupplyBank;//补给库
	int m_max = 10;//补给库上限最大数量
	QMap<Supply::Type, SupplyProperty>m_Property;//补给包属性
	int m_SupplyType = 3;//出场补给种类,默认全部启用
	//Sprite* m_Plane=nullptr;//绑定的飞机
	bool flag = true;//AutoSupply
};

#endif // !__SUPPLY_H_